package top.zhimingw.mapper;

import org.apache.ibatis.annotations.Mapper;
import top.zhimingw.pojo.Article;
import top.zhimingw.pojo.ArticleDateArchive;

import java.util.Date;
import java.util.List;

/**
 * @InterfaceName ArticleMapper
 * @Description (Article)表数据库访问层
 * @Author:zhimingw
 * @Version 1.0
 * @since 2021/5/30 21:13
 */

@Mapper
public interface ArticleMapper {
    /**
    * @Description: 添加Article
    * @Param: [article]
    * @return: int
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    int insert(Article article);

    /**
    * @Description: 删除Article
    * @Param: [id]
    * @return: int
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    int deleteById(Integer id);

    /**
    * @Description: 查询单条数据
    * @Param: [id]
    * @return: top.zhimingw.pojo.Article
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    Article queryById(Integer id);

    /**
    * @Description: 根据状态获取文章
    * @Param: [status]
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> queryByStatus(Integer status);

    /**
    * @Description: 修改Article,根据 article 的主键修改数据
    * @Param: [article]
    * @return: int
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    int update(Article article);

    /**
    * @Description: 根据条件获取文章数量
    * @Param: [status]
    * @return: java.lang.Integer
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    Integer totalCount(Integer status);


    /**
    * @Description: 获取阅读量最高的文章
    * @Param: []
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> orderByReadCount();

    /**
    * @Description: 获得文章日期归档
    * @Param: []
    * @return: java.util.List<top.zhimingw.pojo.ArticleDateArchive>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<ArticleDateArchive> getArchive();

    /**
    * @Description: 根据发表时间降序获取文章
    * @Param: []
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> orderByPublishTime();

    /**
    * @Description: 根据Id获得文章标题
    * @Param: [aId]
    * @return: java.lang.String
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    String getTitle(Integer aId);

    /**
    * @Description: 根据标签ID获取已发布的文章
    * @Param: [id]
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> findByTagId(Integer id);

    /**
    * @Description: 根据文集ID获取已发布的文章
    * @Param: [id]
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> findByKindId(Integer id);

    /**
    * @Description: 根据日期归档获取文章
    * @Param: [date]
    * @return: java.util.List<top.zhimingw.pojo.Article>
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    List<Article> findByDate(Date date);

    /**
    * @Description: 删除全部回收站文章
    * @Param: []
    * @return: java.lang.Integer
    * @Author: zhimingw
    * @Date: 2021/5/31
    */
    Integer deleteTrash();

}
